// 类 类型：类的类型可以通过接口来实现
(()=>{
    
    //定义一个接口
    interface iFly{
     // 方法中没有任何的实现
     fly()
    }
    // 定义一个类
    class Person implements iFly{
        // 实现接口中的方法
        fly(){
            console.log('我会写部分ts了');
            
        }
    }
    // 实列化对象
    const person = new Person()
    person.fly()
    // 定义一个接口
    interface iSwim{
        swim()
    }
    // 定义一个类 一个类同时也可以被多个接口约束
    class Person2 implements iFly,iSwim{
        fly() {
            console.log('我会写部分ts了1');
        }
        swim() {
            console.log('我会写部分js了1');
        }
    }
    const person2 = new Person2()
    person2.fly()
    person2.swim()

    // 总结 ：类可以通过接口的方式来定义这个类的类型
    // 类可以实现一个接口也可以实现多个接口,接口中的内容都要真正的实现
    // 接口可以继承其他的多个接口

    // 定义一个接口继承其他的多个接口
    interface imyJICheng extends iFly,iSwim{
        
    }
    //定义一个类,直接实现imyJICheng这个接口  
    class Person3 implements imyJICheng{
        fly() {
            console.log('我会写部分ts了1');
        }
        swim() {
            console.log('我会写部分js了1');
        }
    }
    const person3 = new Person3()
    person3.fly()
    person3.swim()

    // 总结:接口和接口之间叫继承(extend关键字),类和接口之间叫实现(implements)

})()